import {babel, getBabelOutputPlugin} from '@rollup/plugin-babel';
import clear from "rollup-plugin-clear"
import {terser} from 'rollup-plugin-terser';
import typescript from '@rollup/plugin-typescript';
import {visualizer} from "rollup-plugin-visualizer";
import image from "@rollup/plugin-image";
import postcss from 'rollup-plugin-postcss'
import postcssUrl from 'postcss-url'
import nodeResolve from '@rollup/plugin-node-resolve';
import url from 'rollup-plugin-url';
import copy from 'rollup-plugin-copy';
import commonjs from '@rollup/plugin-commonjs';

export default {
    input: 'src/index.ts',
    output: [
        {
            file: "dist/index.umd.cjs",
            format: 'cjs',
            exports: 'auto',
            plugins: [terser()]
        },
        {
            file: "dist/index.js",
            format: 'es',
            plugins: [terser()]
        }
    ],
    plugins: [
        babel({babelHelpers: 'bundled', exclude: 'node_modules/**', extensions: ['.js', '.ts', '.tsx', '.jsx']}),
        getBabelOutputPlugin({
            presets: ['@babel/preset-env', '@babel/preset-react']
        }),
        nodeResolve({
            mainFields: ['module', 'main', 'browser'], // Make sure this is included
        }),
        commonjs(),
        copy({
            targets: [
                // {src: 'src/assets/icons/*', dest: 'dist/icons'},
                {src: 'src/assets/icons-ext/*', dest: 'dist/icons-ext'},
                // {src: 'src/assets/images/*', dest: 'dist/images'},
            ],
            verbose: true
        }),
        url({
            include: ['**/*.png', '**/*.jpg', '**/*.jpeg', '**/*.gif', '**/*.svg'],  // 处理的图像类型
            limit: 0,           // 设置为 0，表示所有图像都不进行 base64 编码，而是直接复制
            emitFiles: true,    // 确保图像文件被复制到输出目录
        }),
        postcss({
            extract: "index.min.css",
            extensions: ['.css', '.scss', '.less'],
            minimize: true,
            plugins: [
                // postcssUrl({
                //     include: ['**/*.png', '**/*.jpg', '**/*.jpeg', '**/*.gif', '**/*.svg'],  // 处理的图像类型
                //     limit: 0,           // 设置为 0，表示所有图像都不进行 base64 编码，而是直接复制
                //     emitFiles: true,    // 确保图像文件被复制到输出目录
                //     // url: 'inline', // 启用内联资源，使用base64编码
                //     // maxSize: 0, // 内联的最大文件大小(千字节)
                //     // fallback: 'copy', // 如果超出最大大小或 url 包含哈希，则使用 url 回退方法
                //     // includeUriFragment: true, // 在 URI 末尾包含片段标识符
                //     // ignoreFragmentWarning: true, // 内联带有片段的 SVG URL 时不发出警告
                //     // optimizeSvgEncode: true // 减小内联 svg 的大小（IE9+，Android 3+）
                // }),
            ]
        }),
        clear({
            // 必填项, 指出哪些目录应该被清理
            targets: ['dist'],
            // 可选，当在watch模式下进行重新编译时是否清除目录
            watch: false // default: false
        }),
        visualizer(),
        image()
    ],
    external: [
        /@babel\/runtime/,
    ],

}
